// 引入 Request
import Request from '@/js_sdk/myp-request/myp-request/index.js'
// 设置 通用的 baseUrl 以及 header
const config = {
	// baseUrl: "http://39.102.40.86:8082",
	baseUrl: "http://localhost:8082",
	header: {
		//"content-type": "application/x-www-form-urlencoded"
	}
}

// 设置自己的请求拦截器，必须加上 `async`
// 请求前的拦截，比如是否登录/过期/刷新token/...
const reqInterceptor = async (options) => {
	// 不需要登录
	if (options.authType === 'NONE') {
		return options
	}
	// 需要登录的
	var lhamster_identity_info = uni.getStorageSync("lhamster_identity_info")
	if (lhamster_identity_info) {
		// 把token放到请求头中
		options.header.lhamster_identity_info = lhamster_identity_info
		return options
	} else {
		// 跳转到登录页
		uni.redirectTo({
			url: '/pages/user/login'
		});
		return false
	}
}

// 设置自己的响应拦截器
// 统一对返回的数据进行整理，方便接口统一使用
// conf是您api的options信息，一般情况下您只需要用到您自定义的标记字段
const resInterceptor = (response, conf = {}) => {
	// 必须返回你需要处理的数据，将会进入resolve（then中处理）
	// 如果需要reject，需要设置mypReqToReject:true，还可以携带自己定义的任何提示内容（catch中处理）
	// uni.request进入fail也会进入该拦截器（为了统一处理逻辑），这个时候的response参数为{mypFail: true, response: fail info}。fail时不管返回啥，都进入reject(catch)
	if (response.mypFail) {
		return response.response
	}
	// 请求被拦截时也会进入该回掉（为了统一处理逻辑），这个时候的response参数为{mypCancel: true, response: cancel info}。cancel时不管返回啥，都进入reject(catch)
	if (response.mypCancel) {
		return response.response
	}
	// 检查登录是否失效
	if (!response.data.result && (response.data.msg == "token过期，请重新登录" || response.data.msg ==
			"token解析异常")) {
		console.log("登录失效：" + response.data);
		// 清空本地token
		uni.removeStorageSync("lhamster_identity_info")
		// 跳转到登录页
		uni.redirectTo({
			url: '../user/login'
		});
	}
	return response
}

// 实例化请求器
// 您可以根据需要实例化多个请求器
const req = new Request(config, reqInterceptor, resInterceptor)

export default req
